GtkButton: Use gdk_seat_grab()
authorCarlos Garnacho <carlosg@gnome.org>
Thu, 26 Nov 2015 18:54:01 +0000 (19:54 +0100)
committerCarlos Garnacho <carlosg@gnome.org>
Mon, 14 Dec 2015 23:32:55 +0000 (00:32 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=759309

gtk/gtkbutton.c

index 315a11bb1d04bb2d82f73ff4933c6be4bc97ee61..43473da4f49c724af15343a7e33f67a9a9545312 100644 (file)
@@ -2081,14 +2081,13 @@ gtk_real_button_activate (GtkButton *button)
        */
       if (device && gdk_device_get_source (device) == GDK_SOURCE_KEYBOARD)
        {
-         if (gdk_device_grab (device, priv->event_window,
-                              GDK_OWNERSHIP_WINDOW, TRUE,
-                              GDK_KEY_PRESS_MASK | GDK_KEY_RELEASE_MASK,
-                              NULL, time) == GDK_GRAB_SUCCESS)
-           {
-             gtk_device_grab_add (widget, device, TRUE);
-             priv->grab_keyboard = device;
-             priv->grab_time = time;
+          if (gdk_seat_grab (gdk_device_get_seat (device), priv->event_window,
+                             GDK_SEAT_CAPABILITY_KEYBOARD, TRUE,
+                             NULL, NULL, NULL, NULL) == GDK_GRAB_SUCCESS)
+            {
+              gtk_device_grab_add (widget, device, TRUE);
+              priv->grab_keyboard = device;
+              priv->grab_time = time;
            }
        }
 
@@ -2113,7 +2112,7 @@ gtk_button_finish_activate (GtkButton *button,
 
   if (priv->grab_keyboard)
     {
-      gdk_device_ungrab (priv->grab_keyboard, priv->grab_time);
+      gdk_seat_ungrab (gdk_device_get_seat (priv->grab_keyboard));
       gtk_device_grab_remove (widget, priv->grab_keyboard);
       priv->grab_keyboard = NULL;
     }